/*
单链表实现
功能：
创建	 InitList(*L); 初始化操作，创建一个空的
清空 	 ClearList(L); 清空一个单链表
插入     InsertElem(*L, i, e);
获取元素 GetElem(L, i, e); 将第i个元素返回给e
删除元素 DeleteElem(L, i, e);
查找     SearchElem();
返回长度 ListLength();
判断空   ListEmpty(); 判断是否为空，if empty return true
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct Data /*数据*/
{
    int id;
    char *name;
} Data;

typedef struct Node /*链表的节点*/
{
    struct Data *data;
    struct Node *next;
} Node;
typedef struct Node* linklist;
void InitList();
int isEmpty(linklist* list);
void ClearList(linklist* list);
int ListLength(linklist list);
//void InsertElem(linklist list, int i, linklist tmp, int data);
void HeadInsertElem(linklist* list, int data); // 头插法
void TailInsertElem(linklist* list, int id, char *name); // 尾插法
void GetElem(linklist list, int i, int* tmp);
int SearchElem(linklist list, int tmp);
int InsertElem(linklist* list, int i, int data);
int DeleteElem(linklist* list, int i, int* data);
void visit(Data* data);
void printlist(linklist list);